home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / m68k / 172 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  6.4 KB

  1. Path: cnn.nas.nasa.gov!not-for-mail
  2. From: thorpej@lestat.nas.nasa.gov (Jason R Thorpe)
  3. Newsgroups: comp.sys.m68k
  4. Subject: Re: Req: 68020+ assembler for unix systems
  5. Date: 29 Jan 1996 08:54:09 -0800
  6. Organization: Numerical Aerodynamic Simulation Project - NASA Ames
  7. Message-ID: <4eiu3i$9f7@lestat.nas.nasa.gov>
  8. References: <4ei0qc$fq1@mordred.cc.jyu.fi>
  9. NNTP-Posting-Host: lestat.nas.nasa.gov
  10.  
  11. In article <4ei0qc$fq1@mordred.cc.jyu.fi>,
  12. Aki Laukkanen <daeron@co.jyu.fi> wrote:
  13.  
  14. >I'm in need of a macro assembler which supports 68020+ processors. This should
  15. >work on unix systems such as linux/i386. I checked m68k-faq already but found
  16. >nothing suitable. Yes, I know about gas but I need one conforming to Motorola
  17. >syntax, not the weird (IMHO) MIT one. Any info appreciated.
  18.  
  19. I was under the impression that the latest version of GAS supported
  20. the weird (IMHO :-) Motorola syntax.  I could be mistaken, but I could have
  21. sworn that a friend of mine at Cygnus mentioned that to me.  In any case,
  22. I have a script written by Charles Hannum for NetBSD that converts
  23. Motorola syntax to MIT syntax.  NetBSD currently uses it to pre-process
  24. the Motorola 68040 FPSP.  The script is appended below.
  25.  
  26. ----- snip -----
  27.  
  28. #!/bin/sh
  29. #    $NetBSD: asm2gas,v 1.3 1994/10/26 07:48:49 cgd Exp $
  30.  
  31. #
  32. # Copyright (c) 1994 Charles Hannum.  All rights reserved.
  33. #
  34. # Redistribution and use in source and binary forms, with or without
  35. # modification, are permitted provided that the following conditions
  36. # are met:
  37. # 1. Redistributions of source code must retain the above copyright
  38. #    notice, this list of conditions and the following disclaimer.
  39. # 2. Redistributions in binary form must reproduce the above copyright
  40. #    notice, this list of conditions and the following disclaimer in the
  41. #    documentation and/or other materials provided with the distribution.
  42. # 3. All advertising materials mentioning features or use of this software
  43. #    must display the following acknowledgement:
  44. #    This product includes software developed by Charles Hannum.
  45. # 4. The name of the author may not be used to endorse or promote products
  46. #    derived from this software without specific prior written permission.
  47. #
  48. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  49. # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  50. # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  51. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  52. # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  53. # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  54. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  55. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  56. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  57. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  58. #
  59.  
  60. # This ugly script converts assembler code from Motorola's format to a
  61. # form that gas (MIT syntax) can digest.
  62.  
  63. cat $1 | sed -e '
  64.   # format canonicalization
  65.  
  66.   /[     ]IDNT[     ]/{s/^/|/;p;d;}
  67.   /^\*/{s//|/;p;d;}
  68.   s/;/|/
  69.   /[     ]equ[     ]/{
  70.     s/\([A-Za-z_][A-Za-z0-9_]*\)[     ]*equ[     ]*/\1,/
  71.     s/[     ][     ]*\(.*\)$/        |\1/
  72.     s/        ||/        |/
  73.     s/^/    .set    /
  74.     p;d
  75.   }
  76.   s/^\([A-Za-z_][A-Za-z0-9_]*\)[     ][     ]*/\1:    /
  77.   s/^\([A-Za-z_][A-Za-z0-9_]*\)$/\1:/
  78.   /^[A-Za-z_][A-Za-z0-9_]*:/{
  79.     h
  80.     s/:.*$/:/
  81.     p
  82.     g
  83.     s/^.*:[     ]*/    /
  84.     /^    $/d
  85.   }
  86.   /^[     ][     ]*\([.a-zA-Z][.a-zA-Z0-9]*\)/{
  87.     h
  88.     s///
  89.     s/^[     ][     ]*//
  90.     s/[     ][     ]*\(.*\)$/        |\1/
  91.     s/        ||/        |/
  92.     x
  93.     s/^[     ][     ]*//
  94.     s/[     ][     ]*.*$/    /
  95.     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
  96.     s/^/    /
  97.     G
  98.     s/\n//
  99.   }
  100. ' | sed -e '
  101.   # operator conversion
  102.  
  103.   s/^    section    7/    .text/
  104.   s/^    section    8/    .text/
  105.   s/^    section    15/    .data/
  106.   /^    include/{s/include[     ]/.include "/;s/\.h[     ]*$/.defs"/;p;d;}
  107.   s/^    xref/|    xref/
  108.   s/^    end/|    end/
  109.   s/^    xdef/    .global/
  110.  
  111.   s/^    dc\.l/    .long/
  112.   s/^    dc\.w/    .short/
  113.   s/^    dc\.b/    .byte/
  114.  
  115.   /^    [aceg-z]/{
  116.     /^    add[aiqx]*\.[bwl]    /{s/\.//;p;d;}
  117.     /^    andi*\.[bwl]    /{s/\.//;p;d;}
  118.     /^    as[lr]\.[bwl]    /{s/\.//;p;d;}
  119.     /^    clr\.[bwl]    /{s/\.//;p;d;}
  120.     /^    cmp[i2]*\.[bwl]    /{s/\.//;p;d;}
  121.     /^    eori*\.[bwl]    /{s/\.//;p;d;}
  122.     /^    lea\.l    /{s/\..//;p;d;}
  123.     /^    ls[lr]\.[bwl]    /{s/\.//;p;d;}
  124.     /^    move[acmqs]*\.[bwl]    /{s/\.//;p;d;}
  125.     /^    mul[su]\.[wl]    /{s/\.//;p;d;}
  126.     /^    neg\.[bwl]    /{s/\.//;p;d;}
  127.     /^    ori*\.[bwl]    /{s/\.//;p;d;}
  128.     /^    ro[lrx]*\.[bwl]    /{s/\.//;p;d;}
  129.     /^    sub[aiqx]*\.[bwl]    /{s/\.//;p;d;}
  130.     /^    swap\.w    /{s/\..//;p;d;}
  131.     /^    s\([a-tv-z][a-z]*\)\.b    /{s/\..//;p;d;}
  132.     /^    tst\.[bwl]    /{s/\.//;p;d;}
  133.     p;d
  134.   }
  135.  
  136.   /^    bchg\.[bl]    /{s/\..//;p;d;}
  137.   /^    bclr\.[bl]    /{s/\..//;p;d;}
  138.   /^    bset\.[bl]    /{s/\..//;p;d;}
  139.   /^    btst\.[bl]    /{s/\..//;p;d;}
  140.   /^    div[sul]*\.[wl]    /{s/\.//;p;d;}
  141.   /^    fabs\.[sdx]    /{s/\.//;p;d;}
  142.   /^    fadd\.[sdxbwl]    /{s/\.//;p;d;}
  143.   /^    fcmp\.[sdxbwl]    /{s/\.//;p;d;}
  144.   /^    fdiv\.[sdx]    /{s/\.//;p;d;}
  145.   /^    fmove[mx]*\.[sdxbwl]    /{s/\.//;p;d;}
  146.   /^    fmul\.[sdx]    /{s/\.//;p;d;}
  147.   /^    fneg\.[sdx]    /{s/\.//;p;d;}
  148.   /^    fsqrt\.[sdx]    /{s/\.//;p;d;}
  149.   /^    fsub\.[sdxbwl]    /{s/\.//;p;d;}
  150.   /^    ftst\.[sdx]    /{s/\.//;p;d;}
  151.  
  152.   /^    b[a-eg-z][a-z]*\.b    /{s/\.b/s/;p;d;}
  153.   /^    b[a-eg-z][a-z]*\.w    /{s/\.w//;p;d;}
  154.   /^    b[a-eg-z][a-z]*\.l    /{s/\.l/l/;p;d;}
  155.   /^    db[a-z][a-z]*\.w    /{s/\.w//;p;d;}
  156.   /^    fb[a-eg-z][a-z]*\.w    /{s/\.w//;p;d;}
  157.   /^    fb[a-eg-z][a-z]*\.l    /{s/\.l/l/;p;d;}
  158. ' | sed -e '
  159.   # operand conversion
  160.  
  161.   s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
  162.   s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
  163.   s/\([^_a-zA-Z0-9]\)FPIAR$/\1FPI/g
  164.   s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
  165.   s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
  166.   s/\([^_a-zA-Z0-9]\)fpiar$/\1fpi/g
  167.  
  168.   s/\$/0x/g
  169.   s/#:/#:0x/g
  170.  
  171.   s/-(\([sSpPaA][pPcC0-7]\))/\1@-/g
  172.   s/(\([sSpPaA][pPcC0-7]\))+/\1@+/g
  173.   s/\([-+A-Za-z0-9_]*\)(\([sSpPaA][pPcC0-7]\)\([),]\)/\2@(\1\3/g
  174.  
  175.   s/\.\([bBwWlL])\)/:\1/g
  176.   s/\.\([bBwWlL]\)\*\([0-9][0-9]*)\)/:\1:\2/g
  177.   s/\*\([0-9][0-9]*\))/:l:\1)/g
  178.   s/{\([0-9][0-9]*\):\([0-9][0-9]*\)}/{#\1:#\2}/g
  179.   s/{\([dD][0-7]\):\([0-9][0-9]*\)}/{\1:#\2}/g
  180.  
  181.   s/@(0*)/@/g
  182.   s/(,/(/g;s/:)/)/g
  183.  
  184.   # make up for a gas bug
  185.   /^    fmovemx    /{
  186.     s/    \([fF][pP][0-7]\),/    \1-\1,/
  187.     s/,\([fF][pP][0-7]\)    /,\1-\1    /
  188.     s/,\([fF][pP][0-7]\)$/,\1-\1/
  189.   }
  190. '
  191.  
  192. -- 
  193. Jason R. Thorpe                                       thorpej@nas.nasa.gov
  194. NASA Ames Research Center                               Home: 408.866.1912
  195. NAS: M/S 258-6                                          Work: 415.604.0935
  196. Moffett Field, CA 94035                                Pager: 415.428.6939
  197.